#pragma once


#include "ddcl.h"


typedef struct tag_ddcl_Array ddcl_Array;

DDCLAPI  ddcl_Array *
ddcl_new_array (size_t sz, size_t cap);

DDCLAPI  void
ddcl_free_array (ddcl_Array *);

DDCLAPI  size_t
ddcl_expand_array (ddcl_Array *, size_t cap);

DDCLAPI void *
ddcl_push_array (ddcl_Array *);

DDCLAPI  void *
ddcl_back_array (ddcl_Array *);

DDCLAPI  void *
ddcl_front_array (ddcl_Array *);

DDCLAPI  void
ddcl_pop_back_array (ddcl_Array *);

DDCLAPI  void
ddcl_pop_front_array (ddcl_Array *);

DDCLAPI  void
ddcl_remove_array (ddcl_Array *, size_t index);

DDCLAPI  void *
ddcl_get_array (ddcl_Array *, size_t index);

DDCLAPI  size_t
ddcl_count_array (ddcl_Array *);

DDCLAPI  void
ddcl_sort_array (ddcl_Array *, int(*cmp)(const void *, const void *));
